home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-seriously_amiga-
/
misc
/
felix
/
source
/
windowlist.h
< prev
Wrap
C/C++ Source or Header
|
1999-01-25
|
7KB
|
231 lines
//*************************************************************************//
// Filename: WindowList.h
// Autor: Christian Taulien of Strange Intelligence
// Purpose: definition of used classes
// Creation: 24. März 1998
//*************************************************************************//
#ifndef WINDOWLIST_H
#define WINDOWLIST_H
extern struct Window;
#include "global.h"
#include "flxclasses.h"
//*/ // Für GoldED 5 aktivieren
#include "golded:developer/api/include/apilib.h"
#include "golded:developer/include/editor.h"
/*/ // Für GoldED 4 aktivieren
#include "golded:developer/api/include/api.h"
#include "golded:developer/golded/include/golded.h"
//*/
#include <exec/types.h>
#include <exec/nodes.h>
#include <exec/lists.h>
#include <intuition/intuition.h>
class WNameListC;
//*************************************************************************//
//.klasse
//KLASSENNAME : WNameNodeC
//VERSION : 24. März 1998
//AUTOR : Taulien
//AUFGABE : Eine Klasse zur Verwaltung eines WindowNames in einer Liste
//DOKUMENTATION : -
//BEMERKUNGEN : -
//AENDERUNGEN : -
//*************************************************************************//
struct WNameNodeC : public struct Node
{
friend class WNameListC;
private:
// ## methods
WNameNodeC(struct APIInstance *arg_poInstance, WNameListC *arg_poNameList);
public:
// ## datamembers
// Zeiger auf die GoldED-API-Struktur für das Textfenster
struct APIInstance *m_poAPIInstance;
// Flag das angibt, ob das Fenster zuletzt als modifiziert angezeigt wurde
BOOL m_bModified;
// ## methods
~WNameNodeC();
char *getFileName(void) { return ln_Name; };
WNameNodeC *getNext(void);
WNameNodeC *getPrev(void);
};
//*************************************************************************//
//.klasse
//KLASSENNAME : WNameListC
//VERSION : 24. März 1998
//AUTOR : Taulien
//AUFGABE : Eine Klasse für die Verwaltung der WindowName-Liste
//DOKUMENTATION : -
//BEMERKUNGEN : -
//AENDERUNGEN : -
//*************************************************************************//
class WNameListC : public struct List
{
public:
WNameListC();
~WNameListC();
void removeAll();
BOOL addWName(struct APIInstance *arg_poInstance);
int sortIn(struct APIInstance *arg_poInstance);
WNameNodeC *findWName(struct APIInstance *arg_poInstance);
WNameNodeC *getFirst() { return (WNameNodeC *) lh_Head; };
int indexOf(WNameNodeC *arg_pNode);
int getSize();
WNameNodeC *operator[](int arg_iIndex);
};
//*************************************************************************//
//.klasse
//KLASSENNAME : VisualInfoC
//VERSION : 28. März 1998
//AUTOR : Taulien
//AUFGABE : Eine Hilfsklasse-Klasse für die Verwaltung von VisualInfos
//DOKUMENTATION : -
//BEMERKUNGEN : -
//AENDERUNGEN : -
//*************************************************************************//
class VisualInfoC
{
private:
// ## private Datamembers ##
APTR m_iVisualInfo;
// ## private Methods ##
void initVisualInfo(struct Screen *arg_poScreen);
public:
// ## public Methods ##
VisualInfoC(struct Window *arg_poWindow)
{ initVisualInfo(arg_poWindow->WScreen); };
VisualInfoC(struct Screen *arg_poScreen)
{ initVisualInfo(arg_poScreen); };
virtual ~VisualInfoC();
BOOL isOk(void) { return m_iVisualInfo ? TRUE : FALSE; };
// # operator overriding
operator APTR() { return m_iVisualInfo; };
BOOL operator !() { return !isOk(); };
};
//*************************************************************************//
//.klasse
//KLASSENNAME : HookC
//VERSION : 20. November 1998
//AUTOR : Christian Taulien of Strange Intelligence
//AUFGABE : Diese Klasse repräsentiert einen Hook und stellt gleich-
// zeitig die Hookfunktion bereit.
//DOKUMENTATION : -
//BEMERKUNGEN : -
//AENDERUNGEN : -
//*************************************************************************//
class HookC
{
private:
// ## private datamembers ##
// Objektgebundener Hook zum anspringen der doHookFunc()-Methode
struct Hook m_oHook;
protected:
// ## protected datamembers ##
// This Methods will be called by the Hooks
virtual ULONG onHook(struct Hook *arg_poHook, APTR arg_pObject, APTR arg_pParms);
// our SIFC_HookEntry-Function needs to call onHook() which is protected.
friend static ULONG SIFC_HookEntry(register __a0 struct Hook *arg_poHook,
register __a1 APTR arg_pObject,
register __a2 APTR arg_pParms);
public:
// ## public methods ##
HookC();
virtual ~HookC() {}
// Infos
struct Hook *getHook() { return &m_oHook; }
operator struct Hook *() { return &m_oHook; }
};
//*************************************************************************//
//.klasse
//KLASSENNAME : WindowListC
//VERSION : 27. März 1998
//AUTOR : Taulien
//AUFGABE : Eine Klasse für die Verwaltung in GoldED geöffneter Fenster
//DOKUMENTATION : -
//BEMERKUNGEN : -
//AENDERUNGEN : -
//*************************************************************************//
class WindowListC
{
private:
enum
{
IDC_LISTE,
IDC_OKAY,
IDC_CLOSE,
IDC_CANCEL,
GAD_ANZAHL
};
// ## private Datenmember ##
static char *m_asButtonLabels[GAD_ANZAHL];
static int m_iLeft;
static int m_iTop;
int m_iWinHeight;
int m_iWinWidth;
int m_iMaxVisibleEntries;
BOOL m_bGadgetsAttached;
FLXWatchListC *m_poWatches;
struct Gadget *m_poFirstGadget;
struct Gadget *m_apoGadgets[GAD_ANZAHL];
struct Window *m_poWindow;
struct Rectangle m_oLVRect;
WNameListC m_oWindowNameList;
HookC m_oListViewCallBack;
// ## private Methoden ##
char *getSelectedName();
struct Gadget *createGadgets(struct Screen *arg_pScreen);
void freeGadgets();
void validateWindowPosition(struct Screen *arg_poScreen);
public:
// ## public Methoden ##
WindowListC(FLXWatchListC *arg_poWatches);
virtual ~WindowListC();
BOOL isOpen() { return m_poWindow ? TRUE : FALSE; }
BOOL isWNameListEmpty() { return IsListEmpty(&m_oWindowNameList); }
BOOL openWindowList(struct APIMessage *apiMsg);
void closeWindowList();
BOOL SAVEDS handleWindowList();
void updateWindowList(struct APIInstance *arg_poInstance);
void updateModifiedFlag(struct APIInstance *arg_poInstance);
void setMaxVisibleEntries(int arg_iCount)
{ m_iMaxVisibleEntries = arg_iCount; }
void setWindowPosition(int arg_iX = -1, int arg_iY = -1, BOOL arg_bNow = TRUE);
void clearWindow();
void hideGadgets();
void showGadgets();
void resizeWindow(int arg_iEntries = 0, int arg_iX = -1, int arg_iY = -1);
struct Window *getWindow() { return m_poWindow; }
WNameListC *getWNameList() { return &m_oWindowNameList; }
void drawSeperator(int arg_iOffset);
void refreshDesign();
};
#endif //WINDOWLIST_H